package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(schema="REPUESTOS" , name="REP_MOV_COTIZACION")
public class Cotizacion implements Serializable{

	private static final long serialVersionUID = -1658975669141155854L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_REP_MOV_COTIZACION")
	@SequenceGenerator(name = "SEQ_REP_MOV_COTIZACION",  sequenceName = "REPUESTOS.SEQ_REP_MOV_COTIZACION", allocationSize = 0)
	@Column(name = "num_id_cotizacion")
	private Integer idCotizacion;
	
	@ManyToOne
	@JoinColumn(name = "cod_id_estado_cotizacion" , referencedColumnName="cod_id_estado_cotizacion")
	private EstadoCotizacion estadoCotizacion;
	
	@ManyToOne
	@JoinColumn(name = "cod_id_sucursal" , referencedColumnName="cod_id_sucursal") 
	private Sucursal sucursal;
	
	@ManyToOne(optional=true)	
	
	@JoinColumn( name = "cod_id_vendedor" , referencedColumnName="cod_id_vendedor" ) 
	private Vendedor vendedor;
	
	@ManyToOne
	@JoinColumn(name = "cod_id_usuario_cliente" , referencedColumnName="cod_id_usuario_cliente") 
	private UsuarioCliente usuarioCliente;
	
	@Column (name = "txt_observacion" , length = 500)
	private String observacion;	
	
	@Column (name="ind_estado" , length = 1)
	private String  estado;
     
	
	@ManyToOne()
	@JoinColumn(name="COD_ID_USUARIO_CREACION",referencedColumnName="COD_ID_USUARIO" )
	private Usuario usuarioCreacion;
	@ManyToOne
	@JoinColumn(name="COD_ID_USUARIO_MODIFICACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioModificacion;
	@ManyToOne
	@JoinColumn(name="COD_ID_USUARIO_ELIMINACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioEliminacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_creacion")
	private Date fechaCreacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_modificacion")
	private Date fechaModificacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_eliminacion")
	private Date fechaEliminacion;
	
	@OneToMany( mappedBy = "cotizacion", fetch = FetchType.LAZY)
	private List<ImagenRepuestoCotizacion> listaImagenRepuestoCotizaciones;
	
	@OneToMany( mappedBy = "cotizacion", fetch = FetchType.LAZY)
	private List<PromocionCotizacion> listaPromocionCotizaciones;
	
	public Cotizacion() {
		super();
	}

	public Cotizacion(Integer idCotizacion) {
		super();
		this.idCotizacion = idCotizacion;
	}

	public EstadoCotizacion getEstadoCotizacion() {
		return estadoCotizacion;
	}

	public void setEstadoCotizacion(EstadoCotizacion estadoCotizacion) {
		this.estadoCotizacion = estadoCotizacion;
	}

	public Sucursal getSucursal() {
		return sucursal;
	}

	public void setSucursal(Sucursal sucursal) {
		this.sucursal = sucursal;
	}

	public Vendedor getVendedor() {
		return vendedor;
	}

	public void setVendedor(Vendedor vendedor) {
		this.vendedor = vendedor;
	}

	public UsuarioCliente getUsuarioCliente() {
		return usuarioCliente;
	}

	public void setUsuarioCliente(UsuarioCliente usuarioCliente) {
		this.usuarioCliente = usuarioCliente;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Usuario getUsuarioCreacion() {
		return usuarioCreacion;
	}

	public void setUsuarioCreacion(Usuario usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}

	public Usuario getUsuarioModificacion() {
		return usuarioModificacion;
	}

	public void setUsuarioModificacion(Usuario usuarioModificacion) {
		this.usuarioModificacion = usuarioModificacion;
	}

	public Usuario getUsuarioEliminacion() {
		return usuarioEliminacion;
	}

	public void setUsuarioEliminacion(Usuario usuarioEliminacion) {
		this.usuarioEliminacion = usuarioEliminacion;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public Date getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}

	public Date getFechaEliminacion() {
		return fechaEliminacion;
	}

	public void setFechaEliminacion(Date fechaEliminacion) {
		this.fechaEliminacion = fechaEliminacion;
	}
	public Integer getIdCotizacion() {
		return idCotizacion;
	}

	public void setIdCotizacion(Integer idCotizacion) {
		this.idCotizacion = idCotizacion;
	}

	public String getObservacion() {
		return observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	
	public List<ImagenRepuestoCotizacion> getListaImagenRepuestoCotizaciones() {
		return listaImagenRepuestoCotizaciones;
	}

	public void setListaImagenRepuestoCotizaciones(
			List<ImagenRepuestoCotizacion> listaImagenRepuestoCotizaciones) {
		this.listaImagenRepuestoCotizaciones = listaImagenRepuestoCotizaciones;
	}

	public List<PromocionCotizacion> getListaPromocionCotizaciones() {
		return listaPromocionCotizaciones;
	}

	public void setListaPromocionCotizaciones(
			List<PromocionCotizacion> listaPromocionCotizaciones) {
		this.listaPromocionCotizaciones = listaPromocionCotizaciones;
	}

	

	
}
